// 用来处理文件中的数据

var fs = require('fs')

var dbPath = './db.json'

// 获取学生信息,return []
// callback是一个形参，传入的是一个函数，当做回调函数
exports.find = function(callback) {
    fs.readFile(dbPath, 'utf-8', function(err, data) {
        if (err) {
            return callback(err)
        }
        //为了区分两个参数，第一个设置为null
        callback(null, JSON.parse(data).students)
    })
}

// 更新时根据id获取学生信息
exports.findId = function(id, callback) {
    fs.readFile(dbPath, 'utf-8', function(err, data) {
        if (err) {
            return callback(err)
        }
        //为了区分两个参数，第一个设置为null
        var students = JSON.parse(data).students

        var stu = students.find(function(item) {
            return item.id === parseInt(id)
        })
        callback(null, stu)
    })
}

// 添加学生信息
exports.save = function(student, callback) {

    fs.readFile(dbPath, 'utf-8', function(err, data) {
        if (err) {
            return callback(err)
        }
        //获得当前文件中的数据，并且转化为对象
        var students = JSON.parse(data).students

        //生成写入的id,通过students.lenght- 1获得最后一个下标
        student.id = students[students.length - 1].id + 1

        //将传入进来的student添加到students中
        students.push(student)

        //将对象转化为字符串
        var fileData = JSON.stringify({
            students: students
        })

        //写入文件
        fs.writeFile(dbPath, fileData, function(err, data) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })
    })
}

// 更新学生信息
exports.updata = function(student, callback) {
    fs.readFile(dbPath, 'utf-8', function(err, data) {
        if (err) {
            return callback(err)
        }
        //获得当前文件中的数据，并且转化为对象
        var students = JSON.parse(data).students


        student.id = parseInt(student.id)

        //寻找符合条件的id,使用es6的find方法,会遍历数组，直到找到符合条件的数据
        var stu = students.find(function(item) {
            return item.id === parseInt(student.id)
        })
        for (var key in student) {
            stu[key] = student[key]
        }
        //将对象转化为字符串
        var fileData = JSON.stringify({
            students: students
        })

        //写入文件
        fs.writeFile(dbPath, fileData, function(err, data) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })

    })
}

// 删除学生信息
exports.delete = function(id, callback) {
    fs.readFile(dbPath, 'utf-8', function(err, data) {
        if (err) {
            return callback(err)
        }
        //获得当前文件中的数据，并且转化为对象
        var students = JSON.parse(data).students

        //查找对应元素的下标，根据下边进行删除
        var stu = students.findIndex(function(item) {
            return item.id === parseInt(id)
        })

        students.splice(stu, 1)

        //将对象转化为字符串
        var fileData = JSON.stringify({
            students: students
        })

        //写入文件
        fs.writeFile(dbPath, fileData, function(err, data) {
            if (err) {
                return callback(err)
            }
            callback(null)
        })


    })

}